/* Nombre: validarLugarPersonal
 * Tabla: Historial_Lugar
 * Proposito: validar que al momento de registrarse
 * el lugar donde se encuentra algun personal medico
 * si no esta donde deberia se dispare una alarma
 * y se realize una multa
 * Version: 1.0
 * Autor: Gerardo Barcia
 */
CREATE OR REPLACE TRIGGER "SISTEMACADE"."validarLugarPersonal"
AFTER
INSERT OR UPDATE
ON HISTORIAL_LUGAR
REFERENCING OLD AS OLD
NEW AS NEW
FOR EACH ROW
DECLARE
lugarPermitido NUMBER :=0;
nombre VARCHAR2(20);
descripcionEvento VARCHAR2(255):= 'Violacion de areas de acceso';
BEGIN
SELECT pm.idplanta INTO lugarPermitido FROM PERSONAL_MEDICO pm
WHERE pm.cedulapersonal = :NEW.personalcedulapersonal;
IF lugarPermitido != :NEW.plantaidplanta THEN
INSERT INTO SISTEMACADE.DESCUENTO_SUELDO_PERSONAL(IDDESCUENTOSUELDO, CEDULAPERSONAL,IDDSP) 
VALUES(4, :NEW.personalcedulapersonal,SEQ_IDDSP.nextval);
SELECT pm.datoPersonal.nombre INTO nombre FROM PERSONAL_MEDICO pm
WHERE pm.cedulapersonal = :NEW.personalcedulapersonal;
INSERT INTO SISTEMACADE.EVENTO(IDEVENTO, FECHA, DESCRIPCION, RESUELTO, CEDULAPERSONAL, IDPLANTA) 
VALUES(SEQ_IDEVENTO.nextval, SYSDATE, descripcionEvento, 0, :NEW.personalcedulaPersonal, 1);
DBMS_OUTPUT.put_line('El doctor ' || nombre || ' ha sido multado por incumplir con su espacio de trabajo');
END IF;
END;